package com.gsbelarus.gedemin.income.sync;

import android.content.SharedPreferences;
import android.net.Uri;
import android.preference.PreferenceManager;
import android.content.Intent;
import android.os.IBinder;

import com.gsbelarus.gedemin.income.R;
import com.gsbelarus.gedemin.income.fragment.SettingsFragment;
import com.gsbelarus.gedemin.lib.sync.protocol.DataBaseModel;
import com.gsbelarus.gedemin.lib.sync.protocol.SyncProtocolServiceModel;

/**
 * Сервис синхронизации. Запускается при первом запуске приложения или при старте системы.
 */
public class SyncService extends SyncProtocolServiceModel {

    private String deviceID;

    @Override
    public void onCreate() {
        super.onCreate();
        /** Получаем ANDROID_ID */
        String id = android.provider.Settings.Secure.getString(getContentResolver(),
                android.provider.Settings.Secure.ANDROID_ID);
        deviceID = (id == null) ? "null" : id;
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    /**
     * @return в каком режиме проводить синхронизацию. Вызывается перед каждой синхронизацей.
     */
    @Override
    protected boolean isWorkMode() {
        return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(SettingsFragment.WORK_MODE, false);
    }

    /**
     * @return объект для работы с базой данных
     */
    @Override
    protected DataBaseModel getDataBase() {
        return DataBaseHelper.getInstance(context);
    }

    /**
     * Получение url для запроса блока
     *
     * @param ver номер запрашиваемого блока
     * @return строка url
     */
    @Override
    public String getUrlStringForVer(int ver) {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        String login = Uri.encode(prefs.getString(SettingsFragment.LOGIN, ""), "utf-8");
        String password = Uri.encode(prefs.getString(SettingsFragment.PASSWORD, ""), "utf-8");
        return "http://" + prefs.getString(SettingsFragment.SERVER_ADDRESS, "") +
                "?token=accgetupdate&user=" + login +
                "&passw=" + password + "&mb_ver=" + ver + "&sn=" + deviceID;
    }

    /**
     * Получение url для запроса максимальной версии
     *
     * @return строка url
     */
    @Override
    public String getUrlStringForMaxVer() {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        String login = Uri.encode(prefs.getString(SettingsFragment.LOGIN, ""), "utf-8");
        String password = Uri.encode(prefs.getString(SettingsFragment.PASSWORD, ""), "utf-8");
        return "http://" + prefs.getString(SettingsFragment.SERVER_ADDRESS, "") +
                "?token=accgetmaxnumber&user=" + login +
                "&passw=" + password + "&sn=" + deviceID;
    }

    /**
     * @return локализованное название приложения, используется в шторке уведомлений
     */
    @Override
    protected String getAppName() {
        return context.getString(R.string.app_name);
    }
}